package com.soft.line.mapper;

import com.soft.line.entity.AppletContract;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 小程序合同mapper
 *
 * @author wpb
 * @version 1.0
 * @date 2020/5/26 15:49
 */
public interface AppletContractMapper {

    /**
     * 查询每个部门的合同总数
     *
     * @return
     */
    List<Map<String, Long>> contractNum();


    /**
     * 根据部门id获取合同年列表数据
     *
     * @param paraMap
     * @return
     */
    List<Map<String, Object>> getContractYearList(Map<String, Object> paraMap);

    /**
     * 根据部门id和签订年份分页查询合同列表
     *
     * @param paraMap
     * @return
     */
    List<Map<String, Object>> getContractList(Map<String, Object> paraMap);

    /**
     * 合同根据id和所在年计数
     * @param depId
     * @param signTime
     * @return
     */
    int countContractList(@Param(value = "depId") String depId,@Param(value = "signTime") String signTime);


    /**
     * 根据合同名称分页模糊查询合同列表
     *
     * @param paraMap
     * @return
     */
    List<Map<String, Object>> getContractSearchList(Map<String, Object> paraMap);

    /**
     * 根据 合同名称模糊查询 个数
     * @param contractName
     * @return
     */
    int countContractSearchList(String contractName);


    /**
     * 根据合同详情信息分页查询合同列表
     *
     * @param paraMap
     * @return
     */
    List<Map<String, Object>> getContractQueryList(Map<String, Object> paraMap);

    /**
     * 根据 合同信息 模糊查询
     * @param paraMap
     * @return
     */
    int countContractQueryList(Map<String, Object> paraMap);

    /**
     * 添加合同
     *
     * @param appletContract
     * @return
     */
    int addContract(AppletContract appletContract);

    /**
     * 修改合同
     *
     * @param appletContract 参数
     * @return
     */
    int updateContract(AppletContract appletContract);

    /**
     * 通过id，查询部门详情
     *
     * @param paraMap
     * @return
     */
    Map<String, Object> getContract(Map<String, Object> paraMap);

    /**
     * 根据id删除合同
     *
     * @param paraMap
     * @return
     */
    int deleteContract(Map<String, Object> paraMap);

    /**
     * 根据合同名称，校验合同是否存在
     *
     * @param contractName
     * @return
     */
    int checkContractByName(String contractName);

    /**
     * 根据合同名称 and id 判断合同 是否 存在
     *
     * @param contractName
     * @param id
     * @return
     */
    int checkContractByNameAndId(@Param(value = "contractName") String contractName, @Param(value = "id") int id);

    /**
     * 通过proId 查询相关的支出合同
     */
    List<Map<String,Object>> getAboutAllZCContracts(Map<String, Object> paraMap);
    /**
     *  查询相关的协议
     */
    List<Map<String,Object>> getAboutAllXYContracts(Map<String, Object> paraMap);

    /**
     *  通过id查询相关合同性质
     */
    List<Map<String,Object>> getAboutContractNatureByIdList(Map<String, Object> paraMap,@Param("idList")List<String> idList);

    /**
     *  通过ID查询相关合同
     */
    List<Map<String,Object>> getAboutAllContractsByIdList(Map<String, Object> paraMap);
}
